package cn.remexs.flink.udf.geo;

import cn.remexs.flink.udf.GeoUtils;
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.functions.ScalarFunction;

import java.math.BigDecimal;

/**
 * 坐标转换
 */
public class Wgs84ToGcj02 extends ScalarFunction {
    public Wgs84ToGcj02() {
    }

    public String eval(@DataTypeHint("DECIMAL(32,16)") BigDecimal lon, @DataTypeHint("DECIMAL(32,16)") BigDecimal lat) {
        try {
            double[] gcj02 = GeoUtils.wgs84ToGcj02(lon.doubleValue(), lat.doubleValue());
            return GeoUtils.buildWkt(gcj02[0], gcj02[1]);
        } catch (Exception e) {
            return null;
        }
    }
}
